﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{
    public interface IPronunciation
    {
        /// <summary>
        /// Sets the word this pronunciation represents.
        /// </summary>
        /// <param name="word">the Word this Pronunciation represents</param>
        void setWord(IWord word);
        /// <summary>
        /// Retrieves the word that this Pronunciation object represents.
        /// </summary>
        /// <returns> the word</returns>
        IWord getWord();
        /// <summary>
        /// Retrieves the word classification for this pronunciation
        /// </summary>
        /// <returns></returns>
        IWordClassification getWordClassification();

        /// <summary>
        /// Retrieves the units for this pronunciation
        /// </summary>
        /// <returns></returns>
        IUnit[] getUnits();


        String getTag();

        /// <summary>
        /// Retrieves the probability for the pronunciation. A word may have multiple pronunciations that are not all equally
        /// probable. All probabilities for particular word sum to 1.0.
        /// </summary>
        /// <returns>the probability of this pronunciation as a value between 0 and 1.0.</returns>
        float getProbability();

        /// <summary>
        /// Dumps a pronunciation
        /// </summary>
        void dump();
        
        
        /// <summary>
        /// Returns a detailed string representation of this Pronunication.
        /// </summary>
        /// <returns></returns>
        String toDetailedString();
    }
}
